﻿//int TreeComplete(BTNode* root)
//{
//	Que q;
//	QueueInit(&q);
//
//	if (root)
//		QueuePush(&q, root);
//
//	while (!QueueEmpty(&q))
//	{
//		BTNode* front = QueueFront(&q);
//		if (front == NULL)
//			break;
//
//		QueuePush(&q, front->left);
//		QueuePush(&q, front->right);
//		QueuePop(&q);
//	}
//
//	// 已经遇到空节点，如果队列中后面的节点还有非空，就不是完全二叉树
//	while (!QueueEmpty(&q))
//	{
//		BTNode* front = QueueFront(&q);
//		QueuePop(&q);
//
//		if (front != NULL)
//		{
//			QueueDestroy(&q);
//			return false;
//		}
//	}
//
//	QueueDestroy(&q);
//	return true;
//}

//int TreeHeight(BTNode* root)
//{
//	if (root == NULL)
//		return 0;
//
//	return TreeHeight(root->left) > TreeHeight(root->right)
//		? TreeHeight(root->left) + 1 : TreeHeight(root->right) + 1;
//}

//int TreeHeight(BTNode* root)
//{
//	if (root == NULL)
//		return 0;
//
//	int leftHeight = TreeHeight(root->left);
//	int rightHeight = TreeHeight(root->right);
//
//	return leftHeight > rightHeight ? leftHeight + 1 : rightHeight + 1;
//}
//int TreeHeight(BTNode* root)
//{
//	if (root == NULL)
//		return 0;
//
//	return fmax(TreeHeight(root->left), TreeHeight(root->right)) + 1;
//}

//层序遍历（借用队结构实现）
//void LevelOrder(BTNode* root)
//{
//	Que q;
//	QueueInit(&q);//初始化
//
//	if (root)
//		QueuePush(&q, root);
//
//	while (!QueueEmpty(&q))//进行遍历
//	{
//		BTNode* front = QueueFront(&q);
//		printf("%d ", front->val);
//		if (front->left)
//			QueuePush(&q, front->left);
//
//		if (front->right)
//			QueuePush(&q, front->right);
//
//		QueuePop(&q);
//	}
//	printf("\n");
//
//	QueueDestroy(&q);
//}